package com.diandi.ddsb.manager;

import com.diandi.ddsb.bean.Staff;
import com.diandi.ddsb.vo.StaffDto;
import com.diandi.ddsb.vo.StaffVo;

import java.util.List;
import java.util.Map;


/**
 * 员工manager
 * 
 */
public interface StaffManager {

	/**
	 * 新增用户信息
	 * 
	 * @return
	 */
	 int insertStaff(Staff staff);

	/**
	 * 修改用户信息
	 * 
	 * @return
	 */
	 int updateStaff(Staff staff);

	/**
	 * 管理员修改用户信息
	 * 
	 * @return
	 */

	 int updateStaffAdmin(Staff staff);

	/**
	 * 删除用户信息
	 * 
	 * @return
	 */
	 void deleteStaff(Long id);

	/**
	 * 根据id查询用户信息
	 * 
	 * @return
	 */
	 Staff findStaff(Long id);

	/**
	 * 根据名称查询用户信息
	 * 
	 * @param name
	 * @return
	 */
	 List<StaffDto> findStaffByNickname(String name);

	/**
	 * 查询所有用户信息
	 * 
	 * @return
	 */
	 List<StaffDto> findAllStaff(Map paramMap);

	/**
	 * 根据email查询管理用户
	 * 
	 * @return
	 */
	 Staff findByNickname(String nickname);

	/**
	 * 根据email查询管理用户
	 * 
	 * @return
	 */
	 StaffDto findStaffVoByEmail(String email);

	/**
	 * 更新密码
	 * 
	 * @param staff
	 * @return
	 */
	 int updateStaffPassword(Staff staff);

	/**
	 * 根据条件查询用户
	 * 
	 * @return
	 */
	List<StaffDto> findStaffByCondition(Map condition);

	 int updateStaffPassword(long id, String password);

	/**
	 * 根据角色查询用户
	 * 
	 * @param roleId
	 * @return
	 */
	 List<StaffDto> findStaffByRoleId(long roleId);

	/**
	 * 获取后台用户管理条数
	 * 
	 * @param paramMap
	 * @return
	 */

	 Integer getStaffVoCount(Map paramMap);

	/**
	 * 更新staff信息
	 * 
	 * @return
	 */

	 Integer findStaffByEmailAndNotId(String email, Long id);

	/**
	 * 获取符合条件的机构人员列表
	 * 
	 * @return
	 */
	 List<StaffVo> queryPrivStaffVo(Map paramMap);

	/**
	 * 根据属性查询机构人员
	 * 
	 * @return
	 */

	 Staff findStaffByProperty(Map paramMap);

	 Staff findStaffById(Long id);

	/**
	 * 查询某个机构下的人员
	 */
	 int getStaffCountByAgency(Long agency);

	/**
	 * 根据属性查询机构人员
	 * 
	 * @return
	 */

	 List<Staff> findStaffByProperties(Map paramMap);

	/**
	 * 更新领导
	 * 
	 * @param paramMap
	 * @return
	 */
	 boolean updateLeader(Map paramMap);

	 List<StaffVo> queryPrivStaffVoGeneral(Map<String, Object> paramMap);

	 Integer getStaffVoCountGeneral(Map<String, Object> paramMap);

	 int updateStaffNew(StaffVo staff);

	/**
	 * 根据属性查询机构人员
	 * 
	 * @return
	 */

	 List<StaffVo> findStaffVoByProperties(Map paramMap);
}
